package com.newcoin.xgb.service;

import com.newcoin.xgb.dto.QueryParameterDto;
import com.newcoin.xgb.dto.RechargeDto;
import com.newcoin.xgb.dto.WithdrawDto;
import com.newcoin.xgb.entity.*;
import com.newcoin.xgb.po.*;

import java.math.BigDecimal;
import java.util.Map;

public interface XgbAccountService {

    /**
     * 创建账户
     *
     * @param userId
     * @return
     * @throws Exception
     */
    Integer createAccount(Long userId) throws Exception;


    Result<XgbAccount> getAccount(QueryParameterDto queryParameterDto) throws Exception;

    Result<RechargePo> getRecharge(QueryParameterDto queryParameterDto) throws Exception;

    Result<WithdrawPo> getWithdraw(QueryParameterDto queryParameterDto) throws Exception;

    Result<BonusRecordPo> getBonus(QueryParameterDto queryParameterDto) throws Exception;

    Result<GrabOrdersRecordPo> getGrabOrdersRecord(QueryParameterDto queryParameterDto) throws Exception;

    Result<Map<String, Object>> getRechargeAddress(QueryParameterDto queryParameterDto) throws Exception;

    Result<BonusRecordPo> getIncomeRecord(QueryParameterDto queryParameterDto) throws Exception;

//    Result<OptionalVipPo> getOptionalVip(QueryParameterDto queryParameterDto) throws Exception;

    Result withdraw(WithdrawDto withdrawDto) throws Exception;

    Result<BigDecimal> getBalance(QueryParameterDto queryParameterDto) throws Exception;

    Result<AssetRecordPo> getAssetRecord(QueryParameterDto queryParameterDto);

    Result<BonusRecordPo> getProxy(QueryParameterDto queryParameterDto) throws Exception;

    Result<GrabOrdersRecordPo> getUncommittedOrders(QueryParameterDto queryParameterDto) throws Exception;

    Result<GrabOrdersRecordPo> getCommittedOrders(QueryParameterDto queryParameterDto) throws Exception;


    Result submitRecharge(RechargeDto rechargeDto);

}
